home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
amok_lha
/
amok15.lha
/
Seafarers_Manual
/
Source
/
C3P5.mod
< prev
next >
Wrap
Text File
|
1993-08-15
|
1KB
|
48 lines
MODULE C3P5; (* Chapter 3 Problem 5 *)
(* Program SortAge changed to sort crew in descending sequence *)
(* From the book "Modula-2 A Seafarer's Manual and Shipyard Guide" *)
(* Page 79 adapted "M2Amiga Modula-2" 04 Mar 1988 *)
FROM InOut IMPORT WriteLn,
WriteString,
WriteCard,
ReadCard;
VAR
i, (* array index *)
HoldAge : CARDINAL;
sorted : BOOLEAN;
CrewAge : ARRAY [1..25] OF CARDINAL;
BEGIN
WriteLn;
WriteString ("Enter crew ages: ");
WriteLn;
FOR i := 1 TO 25 BY 1 DO
ReadCard (CrewAge[i]); (* get age from keyboard *)
WriteLn;
END;
REPEAT (* pass thru array until sorted *)
sorted := TRUE; (* assume sorted *)
FOR i := 1 TO (25 - 1) BY 1 DO
(* compare each adjacent pair of elements *)
IF (CrewAge[i] < CrewAge[i+1]) THEN
HoldAge := CrewAge[i]; (* out of order, exchange *)
CrewAge[i] := CrewAge[i+1];
CrewAge[i+1] := HoldAge;
sorted := FALSE;
END; (* IF *)
END; (* FOR *)
UNTIL sorted;
WriteString ("Sorted crew ages: ");
FOR i := 1 TO 25 BY 1 DO (* display sorted ages *)
WriteCard (CrewAge[i],5);
WriteLn;
END; (* FOR *)
END C3P5.